class Solution {
public:
    bool isValid(std::string s) {
        std::stack<char> st;
        for (char c : s)
        {
            if (c == '(' || c == '{' || c == '[')
            {
                st.push(c);
            }
            else {
                if (!st.empty() && match(c) == st.top())
                {
                    st.pop();
                }
                else
                {
                    return false;
                }
            }
        }
        return st.empty();
    }
    char match(char c)
    {
        if (c == ')')
        {
            return '(';
        }
        else if (c == '}')
        {
            return '{';
        }
        else if (c == ']')
        {
            return '[';
        }
        return '\0';
    }
};